widget: Create render node with correct bounds
authorBenjamin Otte <otte@redhat.com>
Tue, 1 Nov 2016 02:57:42 +0000 (03:57 +0100)
committerBenjamin Otte <otte@redhat.com>
Tue, 1 Nov 2016 02:59:37 +0000 (03:59 +0100)
We want a render node where (0,0) is the top left of the widget.
However, we need to account for the clip origin not matching the
allocation origin.

gtk/gtkwidget.c

index 0293784f04082ce04d7915f2861522664854af85..1fd5d7ee0ec6238fe19fb27df94376c813fee0e3 100644 (file)
@@ -15624,12 +15624,15 @@ gtk_widget_create_render_node (GtkWidget   *widget,
                                const char  *name)
 {
   GskRenderNode *res = gsk_renderer_create_render_node (renderer);
-  GtkAllocation clip;
+  GtkAllocation clip, allocation;
   graphene_rect_t bounds;
 
   gtk_widget_get_clip (widget, &clip);
+  gtk_widget_get_allocation (widget, &allocation);
 
-  graphene_rect_init (&bounds, 0, 0, clip.width, clip.height);
+  graphene_rect_init (&bounds, 
+                      allocation.x - clip.x, allocation.y - clip.y,
+                      clip.width, clip.height);
 
   gsk_render_node_set_name (res, name);
   gsk_render_node_set_bounds (res, &bounds);